package com.infolab.aims.service.intf;

import java.util.List;

import com.infolab.aims.common.bean.SearchCriteria;
import com.infolab.aims.common.bean.SearchResult;
import com.infolab.aims.domain.asset.AssetBalance;
import com.infolab.aims.domain.asset.AssetComponent;
import com.infolab.aims.domain.asset.AssetEquipment;
import com.infolab.aims.domain.asset.AssetEquipmentBalance;
import com.infolab.aims.domain.asset.AssetEquipmentView;
import com.infolab.aims.domain.asset.AssetModel;

public interface AssetModelService {
	
	public void createAssetModel(AssetModel assetModel);
	
	public void createAssetEquipment(AssetEquipment assetEquipment);
	
	public void createAssetComponent(AssetComponent assetComponent);
	
	public boolean isAllowedToDelete(AssetModel assetModel);
	
	public AssetModel getAssetModel(Integer assetModelId);
	
	public AssetModel findAssetModel(SearchCriteria searchCriteria);
	
	public List<AssetModel> findAssetModels(SearchCriteria searchCriteria);
	
	public List<String> searchSerialNoCriteria(SearchCriteria searchCriteria);
	
	public AssetEquipment findAssetEquipment(SearchCriteria searchCriteria);
	
	public List<AssetEquipment> findAssetEquipments(SearchCriteria searchCriteria);
	
	public List<AssetEquipmentView> findAssetEquipmentsView(SearchCriteria searchCriteria);
	
	public List<AssetEquipmentBalance> findAssetEquipmentBalances(SearchCriteria searchCriteria);
	
	public List<AssetComponent> findAssetComponents(SearchCriteria searchCriteria);
	
	public AssetComponent findAssetComponent(SearchCriteria searchCriteria);
	
	public SearchResult searchAssetModel(SearchCriteria searchCriteria);
	
	public SearchResult searchAssetEquipment(SearchCriteria searchCriteria);
	
	public SearchResult searchAssetComponentStock(SearchCriteria searchCriteria);	
	
	public List<AssetBalance> searchAssetBalance(SearchCriteria searchCriteria);
	
	public List<AssetBalance> findAssetBalance(SearchCriteria searchCriteria);
	
	public void updateAssetModel(AssetModel assetModel);
	
	public void updateAssetEquipments(AssetModel assetModel);
	
	public void updateSerialNo(AssetEquipment assetEquipment);
	
	public void updateToFaulty(AssetEquipment assetEquipment);
	
	public boolean checkAvailabilitySerialNo(String newSerialNo);
	
	public void deleteAssetModel(Integer assetModelId);
	
	public void deleteAssetModel(AssetModel assetModel);
	
	public List<String> createAssetBalance(String month, String year, String addUser);
	
	public void createAssetSchedulerBalance(String month, String year, String addUser);
}
